package com.aaa.factorymode.demo02;

/**
 * @author C-Q
 * @version 1.1.0
 * @Description: 简单工厂演示
 * 简单工厂模式的核心是定义一个创建对象的接口，将对象的创建和本身的业务逻辑分离，
 * 降低系统的耦合度，使得两个修改起来相对容易些，当以后实现改变时，只需要修改工厂类即可。
 *
 * · 工厂类角色： 该模式的核心，用来创建产品，含有一定的商业逻辑和判断逻辑
 * · 抽象产品角色：它一般是具体产品继承的父类或者实现的接口。
 * · 具体产品角色：工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。
 * @date 2022/11/8
 */

















public class AsusFactory {
    public static Asus createAsus(String type){
        if(type.equals("8580")){
            return new Book1();
        }else if(type.equals("8585")){
            return new Book2();
        }else {
            return null;
        }
    }
}
    /*简单工厂模式的优缺点：
                    简单工厂模式提供专门的工厂类用于创建对象，实现了对象创建和使用的职责分离，客户端不需知道所创建的具体产品类名
                    及创建过程，只需知道具体产品类对应的参数即可，通过引入配置文件，可以再不修改任何客户端的情况下更换和增加新的
                    具体产品类，在一定程度上提高了系统的灵活性；

    简单工厂的缺点：不符合“开闭原则” ，每次添加新产品就需要修改工厂类，在产品类型较多时，有可能造成工厂逻辑过于复杂，不利于系统的
                    扩展性，并且工厂类集中了所有产品创建逻辑，一旦不能正常工作，整个系统都要收到影响；

        解决：简单工厂模式的问题，出现了工厂方法模式；*/
